/*
 * Copyright 2013-2018 Lilinfeng.
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.intelligent.mts.da.handler;


import com.intelligent.mts.da.xmlmessage.HttpXmlRequest;
import com.intelligent.mts.da.xmlmessage.HttpXmlResponse;
import com.intelligent.mts.da.xmlmessage.Validate;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * @author Administrator
 * @date 2014年2月16日
 * @version 1.0
 */
public class HttpXmlClientHandle extends
        SimpleChannelInboundHandler<HttpXmlResponse> {

	private  static int count = 0;
	@Override
	public void channelActive(ChannelHandlerContext ctx) {

		Validate msg1 = new Validate();
		msg1.setInfo("OBC;1050;HOU=!162220017!V29082306#");
		msg1.setService("GetProgNameByBatch");

		HttpXmlRequest request = new HttpXmlRequest(null, msg1);
		count++;
		ctx.writeAndFlush(request);

	}

	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
		cause.printStackTrace();
		ctx.close();
	}

	@Override
	protected void channelRead0(ChannelHandlerContext ctx, HttpXmlResponse msg) throws Exception {
		System.out.println("The client receive response of http header is : "
				+ msg.getHttpResponse().headers().names());
		System.out.println("The client receive response of http body is : "
				+ msg.getResult());

		if (count == 1){
			ChannelPipeline p = ctx.pipeline();

			p.remove("xml-decoder");

			p.addAfter("http-aggregator","xml-decoder", new HttpXmlRespsonseDecoder2010());

			Validate msg2 = new Validate();
			msg2.setService("SendTestResult");
			msg2.setInfo("OBC;1050;HOU=!162220017!V29082306;OK#");
			HttpXmlRequest request1 = new HttpXmlRequest(null, msg2);
			ctx.writeAndFlush(request1);
			count++;
		}


	}
}
